const express = require('express');
const router = express.Router();
const ShiftModel = require('../models/Shift');
const { authMiddleware } = require('../middleware/auth');

router.use(authMiddleware);

/**
 * 获取所有班次信息（当前班次和历史班次）
 */
router.get('/', async (req, res) => {
  try {
    const shifts = await ShiftModel.getAllShifts();
    res.json({
      status: 'success',
      data: shifts
    });
  } catch (error) {
    console.error('获取班次信息失败:', error);
    res.status(500).json({
      status: 'error',
      message: '获取班次信息失败',
      error: error.message
    });
  }
});

/**
 * 获取当前班次信息
 */
router.get('/current', async (req, res) => {
  try {
    const shifts = await ShiftModel.getAllShifts();
    if (shifts.currentShift) {
      res.json({
        status: 'success',
        data: shifts.currentShift
      });
    } else {
      res.json({
        status: 'success',
        data: null,
        message: '当前没有进行中的班次'
      });
    }
  } catch (error) {
    console.error('获取当前班次信息失败:', error);
    res.status(500).json({
      status: 'error',
      message: '获取当前班次信息失败',
      error: error.message
    });
  }
});

/**
 * 获取指定班次信息
 */
router.get('/:id', async (req, res) => {
  try {
    const shiftId = req.params.id;
    const shift = await ShiftModel.getCurrentShift(shiftId);
    res.json({
      status: 'success',
      data: shift
    });
  } catch (error) {
    console.error('获取班次信息失败:', error);
    res.status(500).json({
      status: 'error',
      message: '获取班次信息失败',
      error: error.message
    });
  }
});

/**
 * 开始新班次
 */
router.post('/start', async (req, res) => {
  try {
    const data = {
      userId: req.user.id
    };
    const newShift = await ShiftModel.startShift(data);
    res.json({
      status: 'success',
      data: newShift,
      message: '班次已开始'
    });
  } catch (error) {
    console.error('开始班次失败:', error);
    res.status(500).json({
      status: 'error',
      message: '开始班次失败',
      error: error.message
    });
  }
});

/**
 * 结束班次
 */
router.post('/end', async (req, res) => {
  try {
    const data = {
      shiftId: req.body.shiftId,
      confirmAmounts: req.body.confirmAmounts,
      note: req.body.note
    };
    const endedShift = await ShiftModel.endShift(data);
    res.json({
      status: 'success',
      data: endedShift,
      message: '班次已结束'
    });
  } catch (error) {
    console.error('结束班次失败:', error);
    res.status(500).json({
      status: 'error',
      message: '结束班次失败',
      error: error.message
    });
  }
});

module.exports = router; 